package com.tjec.project.businessWorkbench.mapper;

import com.tjec.project.businessWorkbench.domain.BmsProjectDoc;
import com.tjec.project.businessWorkbench.dto.WholeDocQueryDto;
import com.tjec.project.businessWorkbench.vo.WholeDocQueryVo;

import java.util.ArrayList;
import java.util.List;

import org.apache.ibatis.annotations.Param;

/**
 * 项目文档 Mapper接口
 * 
 * @author pangyongfeng
 * @date 2020-04-27
 */
public interface BmsProjectDocMapper 
{
    /**
     * 查询项目文档 
     * 
     * @param guid 项目文档 ID
     * @return 项目文档 
     */
    public BmsProjectDoc selectBmsProjectDocByGuid(String guid);

    /**
     * 查询项目文档 列表
     * 
     * @param bmsProjectDoc 项目文档 
     * @return 项目文档 集合
     */
    public List<BmsProjectDoc> selectBmsProjectDocList(@Param("bmsProjectDoc")BmsProjectDoc bmsProjectDoc);

    /**
     * 新增项目文档 
     * 
     * @param bmsProjectDoc 项目文档 
     * @return 结果
     */
    public int insertBmsProjectDoc(BmsProjectDoc bmsProjectDoc);

    /**
     * 修改项目文档 
     * 
     * @param bmsProjectDoc 项目文档 
     * @return 结果
     */
    public int updateBmsProjectDoc(BmsProjectDoc bmsProjectDoc);

    /**
     * 删除项目文档 
     * 
     * @param guid 项目文档 ID
     * @return 结果
     */
    public int deleteBmsProjectDocByGuid(String guid);

    /**
     * 批量删除项目文档 
     * 
     * @param guids 需要删除的数据ID
     * @return 结果
     */
    public int deleteBmsProjectDocByGuids(String[] guids);
    
    /**
     * 文件移动 
     * @param catalogId 移动到的目录id
     * @param updateBy 更新人
     * @param guid 要移动的文件id集合
     * @return
     */
    public int moveBmsProjectDoc(@Param("catalogId")String catalogId,@Param("updateBy")String updateBy,ArrayList<String> list);

    /**
     * 项目主页-文档查询
     * @param bmsProjectDoc 项目文档
     * @return
     */
    public List<BmsProjectDoc> selectBmsProjectDocQueryList(@Param("bmsProjectDoc")BmsProjectDoc bmsProjectDoc);
    
    public List<BmsProjectDoc> getDocByCatalogId(String catalogId);

    List<BmsProjectDoc> selectAllProjectDocQueryList(BmsProjectDoc bmsProjectDoc);

    /**
     * 项目文档详情-移动端
     * @param bmsProjectDoc
     * @return
     */
    List<BmsProjectDoc> selectAllProjectDocQueryMobileList(BmsProjectDoc bmsProjectDoc);
    
    /**
     * 文档查询
     * @param wholeDocQueryVo
     * @return
     */
    public List<WholeDocQueryDto> wholeDocQuery(@Param("wholeDocQueryVo") WholeDocQueryVo wholeDocQueryVo);

//    public Integer countSelectAllProjectDocQueryList(BmsProjectDoc bmsProjectDoc);

//    Integer lazyBuildDocCatalogTreeSelectMobileCounts(BmsProjectDoc bmsProjectDoc);

    List<BmsProjectDoc> getDocAttByCatalogId(String catalogId);

    /**
     *  统计项目文档目录数量
     * @param bmsProjectDoc
     * @return
     */
    Integer countProjectDocCatalog(BmsProjectDoc bmsProjectDoc);
}
